package com.sc.nft.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.sc.nft.enums.*;
import com.sc.nft.sup.SuperEntity;
import com.sc.nft.util.TraceContext;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 任务基础表(SaasTask)表实体类
 *
 * @author 王伟成
 * @since 2024-01-11 15:07:57
 */
@Data
@TableName("sc_saas_task")
@ApiModel(value = "sc_saas_task 对象", description = "任务基础表")
public class SaasTask extends SuperEntity implements Serializable {
    @ApiModelProperty(value = "dao_id")
    private Long daoId;

    @ApiModelProperty(value = "任务名字")
    private String taskName;

    @ApiModelProperty(value = "任务icon")
    private String taskIcon;

    @ApiModelProperty(value = "任务踪迹编码,该编码作用为每次用户命中任务的时候,需要一起记录下来这个参数,让用户知道,该任务命中是什么时候.任务是否过期.在每日重置的时候,用以做备份记录扫描")
    private String taskTrace;

    @ApiModelProperty(value = "任务重置类型")
    private SaasTaskRestEnum taskRest;

    @ApiModelProperty(value = "任务参与者 1:无门槛  2:持有指定藏品")
    private SaasTaskParticipatorEnum taskParticipator;

    @ApiModelProperty(value = "可见对象  1:所有人 2:DAO主理人网体")
    private SaasTaskVisibleEnum taskVisible;

    @ApiModelProperty(value = "任务完成总次数")
    private Integer taskTotalSum;

    @ApiModelProperty(value = "任务剩余数量")
    private Integer taskResidueSum;

    @ApiModelProperty(value = "任务每个人最大完成上限")
    private Integer taskEveryoneSum;

    @ApiModelProperty(value = "开始时间")
    private Date taskStart;

    @ApiModelProperty(value = "结束时间")
    private Date taskEnd;

    @ApiModelProperty(value = "配置状态 1:未配置奖励  2:未提交审核 3:审核中 4:撤销审核 5: 审核未通过 6: 审核通过")
    private SaasTaskConfigurationEnum taskConfiguration;

    @ApiModelProperty(value = "启用状态 1:启动 0:未启动")
    private SaasTaskStatusEnum taskStatus;

    @ApiModelProperty(value = "审核备注")
    private String taskRemark;

    @ApiModelProperty(value = "是否是首次参与,目前只用到了熔炼,意思就是是不是从注册开始第一次熔炼")
    private Boolean firstParticipation;

    @ApiModelProperty(value = "该任务所处在的使用位置  1:dao中的任务 2:官网的星球任务 ")
    private SaasTaskTypePlaceEnum saasType;

    /**
     * 新增的时候,执行该方法.用以赋值默认值
     */
    public void defaultAdd() {
        this.taskConfiguration = SaasTaskConfigurationEnum.NOT_CONFIGURED;
        this.taskStatus = SaasTaskStatusEnum.NOT_STARTED;
        this.taskTrace = TraceContext.genTraceId();
    }
}
